<?php
  /**
   * @author EVANDRO DE OLIVEIRA.
   * @category CONTROLLER
   * @package CONTROLLERS.
   * @since 02/06/2012.
   * @last_update 02/06/2012.
   * @copyright 2012.
   * @version 1.0.
   *
   */
  class PaisesController extends Zend_Controller_Action{
  	protected $strTitleP;
  	protected $strTitleS;
  	
    public function init(){
      $objAuthNamespace = new Zend_Session_Namespace('Zend_Auth');
      
      if(!$objAuthNamespace->session_initialized)
        $this->_redirect('/account/login');
        
      $this->strTitleP = 'PAÍSES';
      $this->strTitleS = 'País';  
    }
    
    /**
     * Action padrão da controller
     */
    public function indexAction(){
      $this->_redirect('paises/list');
    }
    
    /**
     * Action que listará todos os paises existentes.
     */
    public function listAction(){
    	$this->view->strTitleP = $this->strTitleP;
    	$this->view->strTitleS = $this->strTitleS;
    	
    	$this->view->arrFilterFields = array(
        'País' => array(
          'name' => 'ds_pais', 
          'type' => 'text', 
          'width' => '250', 
          'maxlength' => '120'
    	  ),
    	  'Sigla' => array(
          'name' => 'ds_sigla', 
          'type' => 'text', 
          'width' => '50', 
          'maxlength' => '5'
    	  ),
    	);
    	
    	$this->view->arrTitleList = array(
        'Sigla',
        'País',
        'Moeda',
    	  'Prefixo',
    	  'Status'
    	);
    	
    	$this->view->intAtivo = Application_Model_Paises::ATIVO;
    	
    	$objDaoPaises = new Application_Model_Paises();
    	$objFilter = new Zend_Filter_StripTags();
    	
    	$strDsSigla = '';
    	$strDsPais = '';
    	if($this->_request->isPost()){
    		$strDsSigla = $objFilter->filter($this->_request->getPost('ds_sigla'));      
        $strDsPais = $objFilter->filter($this->_request->getPost('ds_pais'));
    	}
    	
    	$arrResult = $objDaoPaises->getByNomeESigla($strDsPais, $strDsSigla);
    	$arrList = array();
    	if(count($arrResult) > 0){
    		foreach($arrResult as $arrData){
    			$arrList['id']          = $arrData->idPais;
    			$arrList['sigla']       = $arrData->ds_sigla;
          $arrList['nome']        = $arrData->ds_pais;
          $arrList['moeda']       = $arrData->ds_moeda;
          $arrList['prefixo']     = $arrData->ds_prefixo;
          $arrList['status']      = $arrData->ds_situacao;
          
    			$arrRes[] = $arrList;
    		}
      } 
    	//Core_Commons::debugging($arrRes);
    	$this->view->objList = $arrRes;
    }
    
    /**
     * Action que adicionará um novo país.
     */
    public function addAction(){
    	$this->view->strTitleP = $this->strTitleP;
      $this->view->strTitleS = $this->strTitleS;
      
      $objDaoPaises = new Application_Model_Paises();
      $arrColunas = $objDaoPaises->getColunas();
      
      $this->view->arrColunas = $arrColunas;
      
      if($this->_request->isPost()){
      	$this->view->request = $this->_request->getPost();
        try{
          if($objDaoPaises->salvar())
            Core_FlashMessage::addMessage('País inserido com sucesso', '1');
          else
            Core_FlashMessage::addMessage('Erro desconhecido ao Inserir o país no sistema', '4');
            
          $this->_redirect('paises/list');
          //Core_Commons::debugging($this->_request->getPost());
      	  //die;
        }
        catch(Exception $objException){
          Core_FlashMessage::addMessage($objException->getMessage(), $objException->getCode());
        }  
      }
    }
    
    /**
     * Action que atualizará um pais específica
     */
    public function editarAction(){
    	$this->view->strTitleP = $this->strTitleP;
      $this->view->strTitleS = $this->strTitleS;
      
      $objDaoPaises = new Application_Model_Paises();
      $arrColunas = $objDaoPaises->getColunas();
      
      $this->view->arrColunas = $arrColunas;
      $this->view->request = $objDaoPaises->getById($this->_request->getParam('fl'));
      
      if($this->_request->isPost()){
      	try{
      		if($objDaoPaises->salvar($this->_request->getPost('idPais')))
      		  Core_FlashMessage::addMessage('País atualizado com sucesso', '1');
      		else
            Core_FlashMessage::addMessage('Erro desconhecido ao atualizar o país!', '4');
          
          $this->_redirect('paises/list');        		
      	}
        catch(Exception $objException){
          Core_FlashMessage::addMessage($objException->getMessage(), $objException->getCode());
        }
      }
    }
    
    /**
     * Action que atualizará uma unidade de ensino específica, tratando como exclusão
     */
    public function excluirAction(){
      $this->view->strTitleP = $this->strTitleP;
      $this->view->strTitleS = $this->strTitleS;
      
      $this->view->strAct = $this->view->controllerName . '/excluir';
      $this->view->strRedirect = $this->view->controllerName . '/list';
      $this->view->strIcon = $this->view->imagens . '/warning.png';
      $this->view->intId = $this->_request->getParams('fl') ;
      
    	if($this->_request->isPost()){		
        $this->view->intId = $this->_request->getPost('fl');  
        try{
        	$objDaoPaises = new Application_Model_Paises();
        	$strWhere = "idPais = '" . $this->_request->getPost('id') . "'";
        	if($objDaoPaises->excluir($strWhere))
            Core_FlashMessage::addMessage($this->strTitleS . ' excluído com sucesso!', '1');        
          else
            Core_FlashMessage::addMessage('Não foi possível excluir o ' . $this->strTitleS . '!', '2');
              
          $this->_redirect($this->view->controllerName . '/list');      
        }
        catch(Exception $objException){
        	Core_FlashMessage::addMessage($objException->getMessage(), '3');
        	$this->_redirect($this->view->controllerName . '/list');
        }                                     
      }
    }
  }